home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / ARMLINUX / MAIL / 9804 / 000129_owner-linux-arm…r.rutgers.edu _Tue Apr 21 14:55:53 1998.msg < prev    next >
Internet Message Format  |  1998-05-13  |  3KB

  1. Return-Path: <owner-linux-arm-outgoing@vger.rutgers.edu>
  2. Received: from orava.funet.fi (orava.funet.fi [128.214.248.46])
  3.     by odie.barnet.ac.uk (8.8.6/8.8.6) with ESMTP id OAA24390
  4.     for <willy@odie.fluff.org>; Tue, 21 Apr 1998 14:55:51 +0100
  5. Received: from vger.rutgers.edu ([128.6.190.2]:25165 "EHLO vger.rutgers.edu" ident: "root") by orava.funet.fi with ESMTP id <390965-15032>; Tue, 21 Apr 1998 16:52:46 +0300
  6. Received: by vger.rutgers.edu id <970803-319>; Tue, 21 Apr 1998 09:38:02 -0400
  7. Received: from odie.barnet.ac.uk ([194.82.202.98]:26734 "EHLO odie.barnet.ac.uk" ident: "willy") by vger.rutgers.edu with ESMTP id <970928-319>; Tue, 21 Apr 1998 09:33:49 -0400
  8. Received: (from willy@localhost)
  9.     by odie.barnet.ac.uk (8.8.6/8.8.6) id OAA24310;
  10.     Tue, 21 Apr 1998 14:40:58 +0100
  11. From: Matthew Wilcox <willy@odie.barnet.ac.uk>
  12. Message-Id: <199804211340.OAA24310@odie.barnet.ac.uk>
  13. Subject: first cut at strrchr.S
  14. To: linux-arm@vger.rutgers.edu
  15. Date:     Tue, 21 Apr 1998 14:40:56 +0100 (BST)
  16. Cc: mdw@ebi.ac.uk
  17. X-Mailer: ELM [version 2.4 PL25]
  18. MIME-Version: 1.0
  19. Content-Type: text/plain; charset=US-ASCII
  20. Content-Transfer-Encoding: 7bit
  21. X-Orcpt: rfc822;linux-arm@vger.rutgers.edu
  22. Sender: owner-linux-arm@vger.rutgers.edu
  23. Precedence: bulk
  24. X-Loop: majordomo@vger.rutgers.edu
  25. Status: RO
  26.  
  27.  
  28. This includes the improvement that mdw told me about with respect to
  29. strchr.  It's 53 instructions, a little more complicated than strchr.
  30. But if it's worth optimising strchr, it's worth optimising strrchr since
  31. it's likely to have to churn through more data.  Again, this is untested
  32. and I'd welcome testers.  Does anyone object to me posting these bits
  33. of assembler?  Would you prefer I placed them on ftp.barnet.ac.uk and
  34. only announced them here?
  35.  
  36. -- 
  37. Set Alias$Case Set Alias$[ |||| |MSet Alias$Otherwise Set Alias$[ \ Matthew
  38. "" |MSet Alias$When If %0=%%0 Then Set Alias$[ "" ||MIf %0=%%0    \ Wilcox
  39. Then Set Alias$Otherwise Set Alias$[ |||||||||||||||| ||MIf       \
  40. %0=%%0 Then Set Alias$When Set Alias$[ ||||||||||||||||
  41.  
  42. strrchr:
  43.    stmfd   r13!, {r4, r14}
  44.    mov     ip, #0
  45.    tst     r0, #3
  46.    beq     3f
  47. 1: ldrb    r2, [r0], #1
  48.    teq     r2, r1
  49.    subeq   ip, r0, #1
  50.    cmp     r2, #0
  51.    tstne   r0, #3
  52.    bne     1b
  53.    bcs     5f
  54. 3: orr     r1, r1, r1, LSL #8
  55.    orr     r1, r1, r1, LSL #16
  56.    mov     r4, #1
  57.    orr     r4, r4, r4, LSL #8
  58.    orr     r4, r4, r4, LSL #16
  59. 4: ldr     r2, [r0], #4
  60.    eor     r3, r2, r1
  61.    sub     r14, r3, r4
  62.    bic     r14, r14, r3
  63.    tst     r14, r4, lsl #7
  64.    moveq   r3, ip
  65.    subeq   ip, r0, #4
  66.    sub     r14, r2, r4
  67.    bic     r14, ip, r2
  68.    tst     r14, r4, lsl #7
  69.    bne     4b
  70. 5: teq     ip, #0
  71.    beq     6f
  72.    tst     ip, #3
  73.    bne     6f
  74.    ldr     r2, [ip]
  75.    eor     r0, r2, r1
  76.    tst     r2, #&000000ff
  77.    tstne   r2, #&0000ff00
  78.    orreq   r0, r0, #&000ff000
  79.    tstne   r2, #&00ff0000
  80.    orreq   r0, r0, #&ff000000
  81.    mvn     r2, #0
  82.    tst     r0, #&ff000000
  83.    addeq   r2, r2, #1
  84.    tstne   r0, #&00ff0000
  85.    addeq   r2, r2, #1
  86.    tstne   r0, #&0000ff00
  87.    addeq   r2, r2, #1
  88.    tstne   r0, #&000000ff
  89.    addeqs  r2, r2, #1
  90.    addge   r0, ip, r2
  91.    ldmgefd r13!, {r4, pc}
  92.    mov     ip, r3
  93.    b       5b
  94. 6: mov     r0, ip
  95.    mov     pc, r14
  96.  
  97. unsubscribe: body of `unsubscribe linux-arm' to majordomo@vger.rutgers.edu